package com.mindskip.xzs.exception;
//这段代码是定义了一个业务异常类BusinessException，用于在程序中抛出业务异常。
// 在前端，当后端抛出BusinessException异常时，前端可以捕获并处理这个异常，比如展示异常信息给用户或者进行相应的操作。
// 在后端，当业务逻辑出现异常时，可以通过抛出BusinessException异常来通知调用方发生了异常情况，调用方可以根据异常信息进行处理或者向上抛出异常。
/**
 * 业务异常类，继承自RuntimeException
 */
public class BusinessException extends RuntimeException {

    /**
     * 未知异常码
     */
    public static final int UNKNOWN_EXCEPTION = 0;

    /**
     * 异常码
     */
    private int code;

    /**
     * 无参构造方法
     */
    public BusinessException() {
        super();
    }

    /**
     * 带有消息和原因的构造方法
     *
     * @param message 异常消息
     * @param cause 异常原因
     */
    public BusinessException(String message, Throwable cause) {
        super(message, cause);
    }

    /**
     * 带有消息的构造方法
     *
     * @param message 异常消息
     */
    public BusinessException(String message) {
        super(message);
    }

    /**
     * 带有原因的构造方法
     *
     * @param cause 异常原因
     */
    public BusinessException(Throwable cause) {
        super(cause);
    }

    /**
     * 带有异常码的构造方法
     *
     * @param code 异常码
     */
    public BusinessException(int code) {
        super();
        this.code = code;
    }

    /**
     * 带有异常码、消息和原因的构造方法
     *
     * @param code 异常码
     * @param message 异常消息
     * @param cause 异常原因
     */
    public BusinessException(int code, String message, Throwable cause) {
        super(message, cause);
        this.code = code;
    }

    /**
     * 带有异常码和消息的构造方法
     *
     * @param code 异常码
     * @param message 异常消息
     */
    public BusinessException(int code, String message) {
        super(message);
        this.code = code;
    }

    /**
     * 带有异常码和原因的构造方法
     *
     * @param code 异常码
     * @param cause 异常原因
     */
    public BusinessException(int code, Throwable cause) {
        super(cause);
        this.code = code;
    }

    /**
     * 获取异常码
     *
     * @return 异常码
     */
    public int getCode() {
        return code;
    }

    /**
     * 设置异常码
     *
     * @param code 异常码
     */
    public void setCode(int code) {
        this.code = code;
    }

    /**
     * 判断是否为未知异常
     *
     * @return 是否为未知异常
     */
    public boolean isUnknown() {
        return code == UNKNOWN_EXCEPTION;
    }
}
